package com.wg.db.repository.entity;

import java.io.Serializable;

/**
 * 基础实体类，实现IEntity接口，提供变更状态跟踪和通用比较能力
 *
 * @param <B> 实体对应的Bean类型（需与数据库表结构匹配）
 * @author 少爷123
 */
public abstract class BaseEntity<B> implements IEntity<B>, Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 标记实体是否被修改（transient避免序列化）
     */
    private transient boolean changed;

    /**
     * 标记实体为已修改（用于批量更新时判断是否需要持久化）
     */
    public void markChanged() {
        this.changed = true;
    }

    /**
     * 重置修改状态（通常在从数据库加载或Bean同步后调用）
     */
    public void resetChanged() {
        this.changed = false;
    }

    /**
     * 检查实体是否被修改
     *
     * @return 已修改返回true，否则false
     */
    public boolean isChanged() {
        return changed;
    }
}